<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>

<body>

</body>
<script>
    // 数组的拓展方法(函数)  => 官方提供专门操作数组的方法 => 所有的数组均可使用

    // 使用方式:  数组.xxx()


    // 学习数组的拓展方法需要注意:
    // 1. 方法的作用
    // 2. 方法的返回值
    // 3. 是否影响原数组  (有些方法直接操作原数组,有些方法根据原数组返回新数组)


    // 数组的增删改查

    // push() 在数组的尾部新增一个或多个元素
    // 返回值: 新增元素后数组的长度
    // 是否影响原数组: 影响

    // var arr = [1, 2, 3];
    // // var result = arr.push("a");
    // var result = arr.push("a", "b", "c");
    // console.log(result); // 4
    // console.log(arr);


    // unshift() 在数组的头部新增一个或多个元素
    // 返回值: 新增元素后数组的长度
    // 是否影响原数组: 影响

    // var arr = [1, 2, 3];
    // var result = arr.unshift("a"); // 4 =>  ["a",1,2,3]
    // var result = arr.unshift("a", "b", "c"); //  6 => ['a', 'b', 'c', 1, 2, 3]
    // console.log(result); //
    // console.log(arr);  //


    // pop() 在数组的尾部删除一个元素
    // 返回值:被删除的元素
    // 是否影响原数组: 影响

    // var arr = [1, 2, 3, 4, 5, 6];
    // var result = arr.pop();
    // console.log(result);
    // console.log(arr);


    // shift() 在数组的头部删除一个元素
    // 返回值:被删除的元素
    // 是否影响原数组: 影响

    // var arr = [1, 2, 3, 4, 5, 6];
    // var result = arr.shift();
    // console.log(result);
    // console.log(arr);


    // splice()  数组任意位置的增删改

    // splice(startIndex,n) 删除 => 自下标为startIndex(起始下标)开始,删除n个元素
    // 返回值:被删除的元素形成的数组(新)
    // 是否影响原数组: 影响
    // var arr = [1, 2, 3, 4, 5, 6];
    // var result = arr.splice(2, 2);
    // console.log(result);
    // console.log(arr);

    // splice(startIndex,0,arg1,arg2...argN) 新增 => 自下标为startIndex(起始下标)开始,删除0个元素,再新增一个或多个元素(从第三参数开始,都是新增的元素)
    // 返回值:被删除的元素形成的数组(新增 => 删除0个 => [])
    // 是否影响原数组: 影响
    // var arr = [1, 2, 3, 4, 5, 6];
    // var result = arr.splice(2, 0, "a", "b", "c");
    // console.log(result);
    // console.log(arr);

    // splice(startIndex,n,arg1,arg2...argN) 新增 => 自下标为startIndex(起始下标)开始,删除n个元素,再新增一个或多个元素(从第三参数开始,都是新增的元素)
    // 返回值:被删除的元素形成的数组
    // 是否影响原数组: 影响
    // var arr = [1, 2, 3, 4, 5, 6];
    // var result = arr.splice(2, 2, "a", "b");
    // console.log(result);
    // console.log(arr);



    // reverse()  数组反转/翻转
    // 返回值: 翻转后的原数组
    // 是否影响原数组: 影响

    var arr = [1, 2, 3, 4, 5, 6];
    var result = arr.reverse();
    console.log(result);
    console.log(arr);


    // 注意: 如果两个对象引用同一片内存空间,它们是全等的
    console.log(result === arr);
    console.log([] === []); // [] 字面量创建 =>  也就是说同时创建了两个数组 => 没有引用同一片内存空间












</script>

</html>